using System;
using System.Collections.Generic;

namespace Me.Prettyprint.Cassandra.Service
{
    /// <summary>
    /// Since Cassandra server uses Java MBeans to gather basic runtime
    /// statistics, we provide an interface for that info.
    /// </summary>
	public interface CassandraClientMonitorMBean
	{
        long WriteFail();
        long ReadFail();
        long RecoverableTimedOutCount();
        long RecoverableUnavailableCount();
        long RecoverableTransportExceptionCount();
        long RecoverableErrorCount();
        long SkipHostSuccess();
        long NumPoolExhaustedEventCount();
        int NumPools();
        int NumIdleConnections();
        int NumActive();
        int NumExhaustedPools();
        long RecoverableLoadBalancedConnectErrors();
        List<string> ExhaustedPoolNames();
        int NumBlockedThreads();
        long NumConnectionErrors();
        List<string> KnownHosts();
        void UpdateKnownHosts();
        List<string> StatisticsPerPool();
        bool AddCassandraHost(string hostStr);
        bool RemoveCassandraHost(string hostStr);
        bool SuspendCassandraHost(string hostStr);
        bool UnsuspendCassandraHost(string hostStr);
        List<string> GetSuspendedCassandraHosts();
        bool SetCassandraHostRetryDelay(string retryDelay);
        int NumRenewedIdleConnections();
        int NumRenewedTooLongConnections();
	}
}